import java.util.*;

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * 判断岛屿数量
     * @param grid char字符型二维数组 
     * @return int整型
     */

    //，将遍历到的元素置为‘0’，并判断遍历到的元素上下左右有没有1,有1则进入改元素继续递归

    private void dfs(char[][] grid,int i,int j){
        grid[i][j]='0';//遍历到的元素置为‘0

        if(i-1>=0&&grid[i-1][j]=='1'){
            dfs(grid,i-1,j);
        }
        if(j-1>=0&&grid[i][j-1]=='1'){
            dfs(grid,i,j-1);
        }
        if(i+1<grid.length&&grid[i+1][j]=='1'){
            dfs(grid,i+1,j);
        }
        if(j+1<grid[0].length&&grid[i][j+1]=='1'){
            dfs(grid,i,j+1);
        }

    }
    public int solve (char[][] grid) {
        // write code here
        int m=grid.length;//行数
        int n=grid[0].length;//列数
        int ans=0;
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(grid[i][j]=='1'){
                    ans++;
                    dfs(grid,i,j);
                }
            }
        }
        return ans;
    }
}